package com.car.util;

import java.text.NumberFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;

public class MapUtil {


public static String conver(String num1) {
	String res = null;
	if (!isNum(num1)) {
		num1="0";
	}
	Double num=Double.valueOf(num1);
		NumberFormat nf = NumberFormat.getPercentInstance();
		 nf.setMaximumFractionDigits(2);
		  res=nf.format(num);
	
	return res;
}
public static boolean isNum(String str){
	if (str==null||"".equals(str)) {
		return false;
	}
	return str.matches("^[-+]?(([0-9]+)([.]([0-9]+))?|([.]([0-9]+))?)$");
}


/**
 * 获取map中第一个数据值
 *
 * @param <K> Key的类型
 * @param <V> Value的类型
 * @param map 数据源
 * @return 返回的值
 */
public static <K, V> V getFirstOrNull(Map<K, V> map) {
    V obj = null;
    for (Entry<K, V> entry : map.entrySet()) {
        obj = entry.getValue();
        if (obj != null) {
            break;
        }
    }
    return obj;
}
/**
 * 获取map中最后一个数据值
 *
 * @param <K> Key的类型
 * @param <V> Value的类型
 * @param map 数据源
 * @return 返回的值
 */
public static <K, V> V getLastOrNull(Map<K, V> map) {
    Object obj = null;
    Collection<V> collection=map.values(); 
    Object[] objects=collection.toArray();
    obj=objects[collection.size()-1];
    return (V) obj;
}
/**
 * 获取map中最后一个K
 *
 * @param <K> Key的类型
 * @param <V> Value的类型
 * @param map 数据源
 * @return 返回的值
 */
public static <K, V> K getLastKeyOrNull(Map<K, V> map) {
    Object obj = null;
    Collection<K> collection=map.keySet(); 
    Object[] objects=collection.toArray();
    obj=objects[collection.size()-1];
    return (K) obj;
}
/**
 * map value 排序
 * @param oldMap
 * @return
 */
	 public static Map sortMap(Map oldMap) {  
	        ArrayList<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>(oldMap.entrySet());  
	        Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {  
	  
	            @Override  
	            public int compare(Entry<String, Integer> arg0,  
	                    Entry<String, Integer> arg1) {  
	                return arg0.getValue() - arg1.getValue();  
	            }

				 
	        });  
	        Map newMap = new LinkedHashMap();  
	        for (int i = list.size()-1; i>=0; i--) {  
	            newMap.put(list.get(i).getKey(), list.get(i).getValue());  
	        }  
	        return newMap;  
	    }  
	
	

}
